/*
 * 
 * 
 * 
 */
package com.hboxs.asl.service;

import com.hboxs.asl.FileInfo;
import com.hboxs.asl.FileInfo.FileType;
import com.hboxs.asl.FileInfo.OrderType;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.List;

/**
 * Service - 文件
 */
public interface FileService {

	/**
	 * 文件验证
	 * 
	 * @param fileType
	 *            文件类型
	 * @param multipartFile
	 *            上传文件
	 * @return 文件验证是否通过
	 */
	boolean isValid(FileType fileType, MultipartFile multipartFile);

	/**
	 * 文件上传
	 * 
	 * @param fileType
	 *            文件类型
	 * @param multipartFile
	 *            上传文件
	 * @param async
	 *            是否异步
	 * @return 访问URL
	 */
	String upload(FileType fileType, MultipartFile multipartFile, boolean async, String imageTypePath);

	/**
	 * 语音上传
	 * @param fileType	文件类型
	 * @param multipartFile	上传文件
	 * @return
	 */
	String uploadMedia(FileType fileType, MultipartFile multipartFile);

	/**
	 * 文件上传（商家端）
	 *
	 * @param fileType
	 *            文件类型
	 * @param multipartFile
	 *            上传文件
	 * @param async
	 *            是否异步
	 * @return 访问URL
	 */
	String merchantUpload(FileType fileType, MultipartFile multipartFile, boolean async, String imageTypePath);

	/**
	 * 文件上传(异步)
	 * 
	 * @param fileType
	 *            文件类型
	 * @param multipartFile
	 *            上传文件
	 * @return 访问URL
	 */
	String upload(FileType fileType, MultipartFile multipartFile, String imageTypePath);

	/**
	 * 文件删除(异步)
	 * 
	 * @param fileType
	 *            文件类型
	 * @param fileName
	 *            上传文件名 201411/XXXX.jpg
	 * @return 访问URL
	 */
	boolean del(FileType fileType, String fileName);

	/**
	 * 文件上传至本地
	 * 
	 * @param fileType
	 *            文件类型
	 * @param multipartFile
	 *            上传文件
	 * @return 路径
	 */
	String uploadLocal(FileType fileType, MultipartFile multipartFile);

	/**
	 * 文件浏览
	 *
	 * @param path
	 *            浏览路径
	 * @param fileType
	 *            文件类型
	 * @param orderType
	 *            排序类型
	 * @return 文件信息
	 */
	List<FileInfo> browser(String path, FileType fileType, OrderType orderType);

	/**
	 * 文件浏览（商家端）
	 *
	 * @param path
	 *            浏览路径
	 * @param fileType
	 *            文件类型
	 * @param orderType
	 *            排序类型
	 * @return 文件信息
	 */
	List<FileInfo> merchantBrowser(String path, FileType fileType, OrderType orderType);


}